// 获取用户基本信息
// 1.初始化路由模块
// 2.初始化路由函数处理模块
// 3.获取用户的基本信息
const { sqlPromise } = require("../db/sqlPromise");
exports.getUserInfo = async (req, res) => {
  // 获取id  根据id去数据库里查询数据
  let sql =
    "select id,username,nickname,email,user_pic from ev_users where id=?";
  let results = await sqlPromise(sql, [req.user.id]);
  //   执行sql语句成功 但是查询到的数据条数不等于1
  if (results.length != 1)
    return res.send({ status: 1, message: "获取用户失败" });
  res.send({
    status: 0,
    message: "获取用户基本信息成功",
    data: results[0],
  });
};

// 更新用户的基本信息
// 1.定义路由和处理函数
// 2.验证表单数据
// 3.实现更新用户基本信息的功能
exports.updateUserInfo = async (req, res) => {
  let id = req.user.id;
  let data = req.body;
  let sql = "update ev_users set nickname=?,email=? where id=?";
  let results = await sqlPromise(sql, [data.nickname, data.email, id]);
  if (results.affectedRows != 1)
    return res.send({ status: 1, message: "修改用户信息失败" });
  res.send({ status: 0, message: "修改信息成功" });
};

// 重置密码
// 1.定义路由和处理函数
// 2.验证表单数据
// 3.实现重置密码功能
const bcrypt = require("bcryptjs"); //引入加密模块
const { serectKey } = require("../config");
exports.updatePassword = async (req, res) => {
  console.log(req.user.id);
  // 如果查询不到用户名
  let user_sql = "select * from ev_users where id=?";
  let userRes = await sqlPromise(user_sql, [req.user.id]);
  console.log(userRes);
  if (!userRes.length)
    return res.send({ status: 1, message: "用户不存在请先注册" });
  //   判断用户输入的密码是否正确
  //   解密
  const compareResult = bcrypt.compareSync(
    req.body.oldPwd,
    userRes[0].password
  );
  //   为true表示相等 false不相等
  if (!compareResult) {
    return res.send({
      status: 1,
      message: "原密码错误 请重新输入",
    });
  }
  let serectPwd = bcrypt.hashSync(req.body.newPwd, 10); //对新密码进行加密
  let sql = "update ev_users set password=? where id=?";
  let results = await sqlPromise(sql, [serectPwd, req.user.id]);
  if (results.affectedRows != 1)
    return res.send({ status: 1, message: "修改密码失败" });
  res.send({ status: 0, message: "更新密码成功" });
};

// 更新用户头像
// 1.定义路由和处理函数
// 2.验证表单数据
// 3.实现用户更新头像的功能
exports.updateAvatar = async (req, res) => {
  let sql = "update ev_users set user_pic=? where id=?";
  let results = await sqlPromise(sql, [req.body.avatar, req.user.id]);
  if (results.affectedRows != 1)
    return res.send({ status: 1, message: "更新用户头像失败" });
  res.send({ status: 0, message: "更新用户头像成功" });
};
